/*存储一条日志消息所需的各项要素
1.日志的输出时间    用于过滤日志输出时间
2.日志的等级        用于进行日志过滤分析
3.文件名称
4.代码行号          用于定位出现代码错误的位置
5.线程ID            用于过滤出错的线程
6.日志主题消息
7.日志器名称        (当前支持多日志器的同时使用)

[2024-4-13 12:13:14][root][12345678][main.cpp:78][FATAL]:创建套接字失败...
*/
#ifndef __MY_LGOMSG__
#define __MY_LGOMSG__

#include "level.hpp"
#include "util.hpp"
#include <iostream>
#include <string>
#include <thread>
namespace mylog
{
    struct LogMsg
    {
        time_t _time;//日志产生时间戳
        LogLevel::value _level;//日志等级
        std::string _filename;//源代码文件名
        size_t _line;//源代码行号
        std::thread::id _tid;//线程id
        std::string _payload;//主题消息
        std::string _logger;//日志器

        LogMsg(LogLevel::value level, const std::string& filename, size_t line, 
            const std::string& payload, const std::string& logger)
            :_line(line),
            _level(level),
            _logger(logger),
            _payload(payload),
            _filename(filename),
            _time(util::Date::getTime()),
            _tid(std::this_thread::get_id())
          {}
    };
}

#endif